#看看就行, 计算细节通用的数据

##############增幅################

# 增幅系数 = [0, 1, 2, 3, 4, 6, 8, 10, 12, 13, 17, 33, 50, 67, 108, 150, 192, 267, 342, 417, 500, 583, 667, 750, 833, 917, 1000, 1083, 1167, 1250, 1333, 1417]
# 增幅系数_HF = [0, 1, 2, 3, 4, 6, 8, 10, 22, 28, 35, 42, 50, 67, 108, 150, 192, 267, 342, 417, 500, 583, 667, 750, 833, 917, 1000, 1083, 1167, 1250, 1333, 1417]
增幅系数 = (0, 1, 2, 3, 4, 6, 8, 10, 22, 28, 35, 42, 50, 67, 108, 150, 192, 267,
        342, 417, 500, 583, 667, 750, 833, 917, 1000, 1083, 1167, 1250, 1333,
        1417)
增幅成长系数 = {'稀有': 1, '神器': 1.3, '勇者': 1.1, '传说': 1.4, '史诗': 1.5, '神话': 1.6}
增幅品级加分 = {'稀有': 45, '神器': 45, '勇者': 45, '传说': 46, '史诗': 46, '神话': 46}
# 增幅品级底数 = {'稀有': 5, '神器': 6, '勇者': 5, '传说': 6, '史诗': 7, '神话': 8}
# 增幅品级底数_HF = {'稀有': 10, '神器': 11, '勇者': 10, '传说': 11, '史诗': 12, '神话': 13}
增幅品级底数 = {'稀有': 10, '神器': 11, '勇者': 10, '传说': 11, '史诗': 12, '神话': 13}


def 增幅计算(装备等级, 品质, 强化等级, 版本='GF'):
    if 版本 == 'GF':
        if 品质 == "智慧产物":
            return 0
        #     return int((装备等级 + 增幅品级加分[品质]) * 增幅成长系数[品质] * 增幅系数[强化等级] / 100 - 0.00000001) + 增幅品级底数[品质]
        # else:
        return int((装备等级 + 增幅品级加分[品质]) * 增幅成长系数[品质] * 增幅系数[强化等级] / 100 -
                   0.00000001) + 增幅品级底数[品质] + (0 if 强化等级 < 12 else 5)


###########特殊装备&勋章###########

耳环强化系数 = (0, 83, 124, 166, 207, 248, 314, 370, 426, 482, 621, 970, 1455, 1941,
          2911, 4043, 5175, 7116, 9056, 10997, 13099, 15363, 17627, 19891,
          22155, 24420, 26684, 28948, 31212, 33476, 35740, 38004)
左右强化系数 = (0, 60, 90, 120, 150, 180, 210, 247, 285, 322, 360, 675, 1013, 1350,
          2025, 2813, 3600, 4950, 6300, 7650, 9113, 10688, 12263, 13838, 15413,
          16988, 18563, 20138, 21713, 23288, 24863, 26438)
勋章强化系数 = (0, 100, 120, 144, 173, 208, 250, 300, 320, 360, 400, 610, 1220, 2440,
          2684, 2952, 3838, 4989, 6486, 8432, 10962)
特殊成长系数 = {
    '普通': 0.4,
    '高级': 0.7,
    '稀有': 1,
    '神器': 1.25,
    '传说': 1.35,
    '史诗': 1.45,
    '神话': 1.55
}
特殊品级加分 = {'普通': 24, '高级': 30, '稀有': 26, '神器': 28, '传说': 29, '史诗': 30, '神话': 31}


def 耳环计算(装备等级, 品质, 强化等级):
    if 品质 == "智慧产物":
        return 0
    return int((装备等级 + 特殊品级加分[品质]) / 2400 * 特殊成长系数[品质] * 耳环强化系数[强化等级])


def 左右计算(装备等级, 品质, 强化等级):
    if 品质 == "智慧产物":
        return 0
    return int((装备等级 + 特殊品级加分[品质]) / 2400 * 特殊成长系数[品质] * 左右强化系数[强化等级])


def 勋章计算(装备等级, 品质, 强化等级):
    return int((装备等级 + 特殊品级加分[品质]) / 2400 * 特殊成长系数[品质] * 勋章强化系数[强化等级])


###############武器###############

武器强化系数 = (0, 2, 2.6, 3.6, 4.7, 5.8, 6.9, 8.2, 11, 14.6, 18.7, 26.9, 36.7, 43,
          49.2, 55.4, 61.7, 68, 74.3, 80.6, 86.9, 93.2, 99.5, 105.8, 112.1,
          118.3, 124.6, 130.9, 137.1, 143.4, 149.7, 156.0)
武器锻造系数 = (0, 2, 3, 4, 6, 8, 13, 18, 25, 32, 41)
武器成长系数 = {
    '普通': 0.4,
    '高级': 0.7,
    '稀有': 1,
    '神器': 1.25,
    '勇者': 1.1,
    '传说': 1.35,
    '史诗': 1.45,
    '神话': 1.55
}
武器品级加分 = {
    '普通': 8,
    '高级': 8,
    '稀有': 10,
    '神器': 12,
    '勇者': 11,
    '传说': 13,
    '史诗': 14,
    '神话': 15
}
武器类型系数 = {
    '短剑': (1.095, 1.115),
    '太刀': (1.095, 1.105),
    '钝器': (1.11, 1.095),
    '巨剑': (1.12, 1.09),
    '光剑': (1.093, 1.09),
    '手套': (1.095, 1.115),
    '臂铠': (1.12, 1.09),
    '爪': (1.1, 1.1),
    '拳套': (1.105, 1.095),
    '东方棍': (1.095, 1.1),
    '左轮枪': (1.087, 1.077),
    '自动手枪': (1.064, 1.094),
    '步枪': (1.1, 1.085),
    '手炮': (1.106, 1.064),
    '手弩': (1.075, 1.085),
    '矛': (1.12, 1.085),
    '棍棒': (1.108, 1.09),
    '魔杖': (1.09, 1.11),
    '法杖': (1.095, 1.12),
    '扫把': (1.1, 1.11),
    '十字架': (1.1, 1.095),
    '念珠': (1.09, 1.115),
    '图腾': (1.105, 1.09),
    '镰刀': (1.105, 1.105),
    '战斧': (1.12, 1.085),
    '匕首': (1.09, 1.089),
    '双剑': (1.102, 1.08),
    '手杖': (1.081, 1.115),
    '苦无': (1.09, 1.11),
    '长枪': (1.105, 1.09),
    '战戟': (1.12, 1.085),
    '光枪': (1.095, 1.115),
    '暗矛': (1.095, 1.105),
    '长刀': (1.108, 1.09),
    '小太刀': (1.1, 1.1),
    '重剑': (1.12, 1.09),
    '源力剑': (1.095, 1.115)
}


def 武器强化计算(装备等级, 品质, 强化等级, 武器类型, 类型):
    武器系数 = (武器类型系数[武器类型][0 if 类型 == '物理' else 1])
    return int((装备等级 + 武器品级加分[品质]) / 8 * 武器成长系数[品质] * 武器强化系数[强化等级] * 武器系数)


def 锻造计算(装备等级, 品质, 锻造等级):
    return round((装备等级 + 武器品级加分[品质]) / 8 * 武器成长系数[品质] * 武器锻造系数[锻造等级])


def 锻造四维(装备等级, 品质, 锻造等级):
    return round((装备等级 + 武器品级加分[品质]) / 80 * 武器成长系数[品质] * 武器锻造系数[锻造等级])


# 武器冷却惩罚系数 = {
#     '短剑': (1, 1.05, 1),
#     '太刀': (0.95, 1, 1),
#     '钝器': (1.05, 1, 1),
#     '巨剑': (1.1, 1, 1),
#     '光剑': (0.9, 1, 1),
#     '手套': (0.9, 1.05, 1),
#     '臂铠': (1.1, 1, 1),
#     '爪': (1, 1, 1),
#     '拳套': (0.9, 1, 1),
#     '东方棍': (1, 1, 1),
#     '左轮枪': (1, 1, 1),
#     '自动手枪': (0.9, 1, 1),
#     '步枪': (1.05, 1, 1),
#     '手炮': (1.1, 1, 1),
#     '手弩': (0.9, 1, 1),
#     '矛': (1.05, 0.95, 1),
#     '棍棒': (1, 1, 1),
#     '魔杖': (0.95, 1, 1),
#     '法杖': (1, 1.1, 1),
#     '扫把': (1 ,1, 1),
#     '十字架': (0.95, 1, 1),
#     '念珠': (0.95, 1.05, 1),
#     '图腾': (1, 0.95, 1),
#     '镰刀': (0.95, 1, 1),
#     '战斧': (1.1, 0.9, 1),
#     '匕首': (0.9, 0.95, 1),
#     '双剑': (1.1, 0.9, 1),
#     '手杖': (1, 1.1, 1),
#     '苦无': (1, 1.05, 1),
#     '长枪': (1.05, 1, 1),
#     '战戟': (1.1, 0.9, 1),
#     '光枪': (1, 1.05, 1),
#     '暗矛': (0.95, 1, 1),
#     '长刀': (1.05, 1, 1),
#     '小太刀': (1, 1, 1),
#     '重剑': (1.1, 1, 1),
#     '源力剑': (1, 1.05, 1]}

武器冷却惩罚系数 = {
    '短剑': (1, 1, 1),
    '太刀': (0.95, 0.95, 1),
    '钝器': (1, 1, 1),
    '巨剑': (1.05, 1, 1),
    '光剑': (0.9, 1, 1),
    '手套': (0.9, 1, 1),
    '臂铠': (1.05, 1, 1),
    '爪': (1, 1, 1),
    '拳套': (0.9, 1, 1),
    '东方棍': (1, 1, 1),
    '左轮枪': (0.95, 1, 1),
    '自动手枪': (0.9, 1, 1),
    '步枪': (1, 1, 1),
    '手炮': (1.05, 1, 1),
    '手弩': (0.9, 1, 1),
    '矛': (1, 0.95, 1),
    '棍棒': (0.95, 1, 1),
    '魔杖': (0.95, 1, 1),
    '法杖': (1, 1.05, 1),
    '扫把': (1, 1, 1),
    '十字架': (1, 0.95, 1),
    '念珠': (0.95, 1.05, 1),
    '图腾': (1, 0.95, 1),
    '镰刀': (0.95, 1, 1),
    '战斧': (1.05, 0.9, 1),
    '匕首': (0.9, 0.95, 1),
    '双剑': (1.05, 0.9, 1),
    '手杖': (1, 1.05, 1),
    '苦无': (1, 1, 1),
    '长枪': (1, 1, 1),
    '战戟': (1.1, 0.9, 1),
    '光枪': (1, 1, 1),
    '暗矛': (0.9, 0.9, 1),
    '长刀': (1, 1, 1),
    '小太刀': (0.95, 1, 1),
    '重剑': (1.05, 1, 1),
    '源力剑': (1, 1, 1)
}

MP系数 = {
    '短剑': (1, 1.15, 1),
    '太刀': (0.95, 1.05, 1),
    '钝器': (1.1, 0.95, 1),
    '巨剑': (1.2, 0.9, 1),
    '光剑': (0.9, 1, 1),
    '手套': (0.95, 1.15, 1),
    '臂铠': (1.2, 0.9, 1),
    '爪': (1, 1, 1),
    '拳套': (1.05, 0.95, 1),
    '东方棍': (0.95, 1, 1),
    '左轮枪': (1, 0.9, 1),
    '自动手枪': (0.7, 1.1, 1),
    '步枪': (1.1, 0.95, 1),
    '手炮': (1.25, 0.75, 1),
    '手弩': (0.9, 1, 1),
    '矛': (1.1, 0.95, 1),
    '棍棒': (1, 1, 1),
    '魔杖': (0.95, 1, 1),
    '法杖': (1, 1.1, 1),
    '扫把': (1, 1, 1),
    '十字架': (1, 0.95, 1),
    '念珠': (0.9, 1.15, 1),
    '图腾': (1.05, 0.9, 1),
    '镰刀': (0.95, 1, 1),
    '战斧': (1.2, 0.85, 1),
    '匕首': (1, 0.9, 1),
    '双剑': (1.2, 0.8, 1),
    '手杖': (0.95, 1.15, 1),
    '苦无': (1, 1.1, 1),
    '长枪': (1.1, 1, 1),
    '战戟': (1.2, 0.9, 1),
    '光枪': (1, 1.15, 1),
    '暗矛': (0.95, 1.05, 1),
    '长刀': (1.1, 1, 1),
    '小太刀': (1, 1, 1),
    '重剑': (1.2, 0.9, 1),
    '源力剑': (1, 1.15, 1)
}


def 武器冷却惩罚(武器类型, 输出类型, 版本='GF'):
    类型系数 = (0 if 输出类型 == '物理百分比' else (1 if 输出类型 == '魔法百分比' else 2))
    if 版本 == 'GF':
        return 武器冷却惩罚系数[武器类型][类型系数]
    # else:
    #     return 武器冷却惩罚系数_HF[武器类型][类型系数]


def 武器MP系数(武器类型, 输出类型, 版本='GF') -> float:
    类型系数 = (0 if 输出类型 == '物理百分比' else (1 if 输出类型 == '魔法百分比' else 2))
    if 版本 == 'GF':
        return MP系数[武器类型][类型系数]

#################防具################


部位系数 = {'上衣': 0.30, '头肩': 0.20, '下装': 0.25, '腰带': 0.10, '鞋': 0.15}
品级加分 = {'稀有': 5, '神器': 8, '勇者': 11, '传说': 14, '史诗': 17, '智慧产物': 17, '神话': 18}


def 精通计算(装备等级, 品质, 强化等级, 部位):
    return round((20 + 2.5 * (装备等级 + 品级加分[品质] + int(强化等级 / 3))) * 部位系数[部位], 2)


def 辅助精通计算(装备等级, 品质, 强化等级, 部位):
    return round((4 + (装备等级 + 品级加分[品质] + int(强化等级 / 3))) * 部位系数[部位], 2)


#############角色基础属性##############
当前等级 = 110

角色基础系数 = {
    '魔枪士': (4.6, 4.6, 4.4, 4.4, 7, 7, 5, 5),
    '格斗家(女)': (5, 5, 4, 4, 7.5, 7.5, 4.5, 4.5),
    '格斗家(男)': (5, 5, 4, 4, 7.5, 7.5, 4.5, 4.5),
    '枪剑士': (4.6, 4.6, 4.4, 4.4, 7, 7, 5, 5),
    '神枪手(女)': (4.5, 4.5, 4.5, 4.5, 6.5, 6.5, 5.5, 5.5),
    '神枪手(男)': (4.5, 4.5, 4.5, 4.5, 6.5, 6.5, 5.5, 5.5),
    '守护者': (4.8, 4.8, 4.2, 4.2, 7, 7, 5, 5),
    '魔法师(女)': (4, 4, 5, 5, 4.5, 4.5, 7.5, 7.5),
    '魔法师(男)': (3.5, 4, 5.5, 5, 4, 4.5, 8, 7.5),
    '暗夜使者': (5, 4, 5, 4, 7.5, 5.5, 6.5, 4.5),
    '缔造者': (4, 4, 5, 5, 4.5, 4.5, 7.5, 7.5),
    '黑暗武士': (4.8, 4.8, 4.2, 4.2, 7.5, 7.5, 4.5, 4.5),
    '鬼剑士(男)': (4.8, 4.8, 4.2, 4.2, 7.5, 7.5, 4.5, 4.5),
    '鬼剑士(女)': (4.6, 4.6, 4.4, 4.4, 7, 7, 5, 5),
    '圣职者(男)': (4.7, 4.8, 4, 4.5, 6.5, 6.5, 4.5, 6.5),
    '圣职者(女)': (4.7, 4.8, 4, 4.5, 6.5, 6.5, 4.5, 6.5)
}

职业基础数据 = {
    '征战者-魔枪士': (5.5, 5.5, 3.5, 3.5),
    '决战者-魔枪士': (5, 5, 4, 4),
    '狩猎者-魔枪士': (3, 4.5, 6, 4.5),
    '暗枪士-魔枪士': (3.5, 3.5, 5.5, 5.5),
    '气功师-格斗家(女)': (3.5, 3.5, 5.5, 5.5),
    '散打-格斗家(女)': (5.5, 5.5, 3.5, 3.5),
    '街霸-格斗家(女)': (5, 4, 5, 4),
    '柔道家-格斗家(女)': (5, 6, 3.5, 3.5),
    '气功师-格斗家(男)': (3.5, 3.5, 5.5, 5.5),
    '散打-格斗家(男)': (5.5, 5.5, 3.5, 3.5),
    '街霸-格斗家(男)': (5, 4, 5, 4),
    '柔道家-格斗家(男)': (5, 6, 3.5, 3.5),
    '暗刃-枪剑士': (5.5, 5.5, 3.5, 3.5),
    '特工-枪剑士': (5, 5, 4, 4),
    '战线佣兵-枪剑士': (5.2, 5, 3.5, 4.3),
    '源能专家-枪剑士': (3.5, 3.5, 5.5, 5.5),
    '漫游枪手-神枪手(女)': (5.5, 5.5, 3.5, 3.5),
    '枪炮师-神枪手(女)': (5.5, 5.5, 3.5, 3.5),
    '机械师-神枪手(女)': (3.5, 3.5, 5.5, 5.5),
    '弹药专家-神枪手(女)': (4.7, 4.3, 4.7, 4.3),
    '漫游枪手-神枪手(男)': (5.5, 5.5, 3.5, 3.5),
    '枪炮师-神枪手(男)': (5.5, 5.5, 3.5, 3.5),
    '机械师-神枪手(男)': (3.5, 3.5, 5.5, 5.5),
    '弹药专家-神枪手(男)': (4.7, 4.3, 4.7, 4.3),
    '合金战士-神枪手(男)': (5.5, 5.5, 3.5, 3.5),
    '精灵骑士-守护者': (5, 5, 4, 4),
    '混沌魔灵-守护者': (3.5, 3.5, 5.5, 5.5),
    '帕拉丁-守护者': (5, 5.5, 2, 5.5),
    '龙骑士-守护者': (5, 5, 4, 4),
    '元素师-魔法师(女)': (3.5, 3.5, 5.5, 5.5),
    '召唤师-魔法师(女)': (3.8, 3.7, 5.3, 5.2),
    '战斗法师-魔法师(女)': (5, 4, 5, 4),
    '魔道学者-魔法师(女)': (4.5, 4, 5.2, 4.3),
    '小魔女-魔法师(女)': (4.7, 4.8, 5.5, 4.5),
    '元素爆破师-魔法师(男)': (3.5, 3.5, 5.5, 5.5),
    '冰结师-魔法师(男)': (3.5, 3.7, 5.5, 5.2),
    '血法师-魔法师(男)': (5.5, 5.5, 3.5, 3.5),
    '逐风者-魔法师(男)': (5.5, 5.2, 3.5, 3.8),
    '次元行者-魔法师(男)': (3.5, 3.5, 5.5, 5.5),
    '刺客-暗夜使者': (5.3, 4.5, 4.2, 4),
    '死灵术士-暗夜使者': (4.7, 3.5, 5.3, 4.5),
    '忍者-暗夜使者': (4.5, 3.5, 5.5, 4.5),
    '影舞者-暗夜使者': (5.5, 4.5, 4, 4),
    '缔造者-魔法师(女)': (4, 4, 5, 5),
    '黑暗武士-鬼剑士(男)': (4.8, 4.8, 4.2, 4.2),
    '剑魂-鬼剑士(男)': (5, 5, 4, 4),
    '鬼泣-鬼剑士(男)': (3.5, 3.5, 5.5, 5.5),
    '狂战士-鬼剑士(男)': (5.5, 5.5, 3.5, 3.5),
    '阿修罗-鬼剑士(男)': (3, 4.5, 6, 4.5),
    '剑影-鬼剑士(男)': (5, 5, 4, 4),
    '刃影-鬼剑士(女)': (5, 5, 4, 4),
    '驭剑士-鬼剑士(女)': (5, 5, 4, 4),
    '暗殿骑士-鬼剑士(女)': (3.5, 3.5, 5.5, 5.5),
    '契魔者-鬼剑士(女)': (5.5, 5.5, 3.5, 3.5),
    '流浪武士-鬼剑士(女)': (5.5, 5.5, 3.5, 3.5),
    '圣骑士-圣职者(男)': (3.5, 5.5, 3.5, 5.5),
    '蓝拳圣使-圣职者(男)': (5.2, 5, 3.9, 3.9),
    '驱魔师-圣职者(男)': (5, 4, 5, 4),
    '复仇者-圣职者(男)': (3.5, 3.5, 5.5, 5.5),
    '圣骑士-圣职者(女)': (3.5, 5.5, 5.5, 3.5),
    '异端审判者-圣职者(女)': (5.2, 5, 3.5, 4.3),
    '巫女-圣职者(女)': (3.5, 3.5, 5.5, 5.5),
    '诱魔者-圣职者(女)': (3.5, 3.5, 5.5, 5.5)
}

# 火抗 冰抗 光抗 暗抗

职业属性抗性数据 = {
    '征战者-魔枪士': (23, 23, 23, 23),
    '决战者-魔枪士': (23, 23, 23, 23),
    '狩猎者-魔枪士': (23, 23, 23, 23),
    '暗枪士-魔枪士': (23, 23, 23, 23),
    '气功师-格斗家(女)': (23, 23, 93, -7),
    '散打-格斗家(女)': (23, 23, 43, 3),
    '街霸-格斗家(女)': (23, 23, 43, 3),
    '柔道家-格斗家(女)': (23, 23, 43, 3),
    '气功师-格斗家(男)': (23, 23, 63, -7),
    '散打-格斗家(男)': (23, 23, 43, 3),
    '街霸-格斗家(男)': (23, 23, 43, 3),
    '柔道家-格斗家(男)': (23, 23, 43, 3),
    '暗刃-枪剑士': (23, 23, 23, 23),
    '特工-枪剑士': (23, 23, 23, 23),
    '战线佣兵-枪剑士': (23, 23, 23, 23),
    '源能专家-枪剑士': (23, 23, 23, 23),
    '漫游枪手-神枪手(女)': (23, 23, 23, 23),
    '枪炮师-神枪手(女)': (23, 23, 23, 23),
    '机械师-神枪手(女)': (23, 23, 23, 23),
    '弹药专家-神枪手(女)': (23, 23, 23, 23),
    '漫游枪手-神枪手(男)': (23, 23, 23, 23),
    '枪炮师-神枪手(男)': (23, 23, 23, 23),
    '机械师-神枪手(男)': (23, 23, 23, 23),
    '弹药专家-神枪手(男)': (23, 23, 23, 23),
    '合金战士-神枪手(男)': (23, 23, 23, 23),
    '精灵骑士-守护者': (28, 28, 28, 28),
    '混沌魔灵-守护者': (28, 28, 28, 28),
    '帕拉丁-守护者': (28, 28, 28, 28),
    '龙骑士-守护者': (28, 28, 28, 28),
    '元素师-魔法师(女)': (23, 23, 23, 23),
    '召唤师-魔法师(女)': (23, 23, 23, 23),
    '战斗法师-魔法师(女)': (23, 23, 23, 23),
    '魔道学者-魔法师(女)': (23, 23, 23, 23),
    '小魔女-魔法师(女)': (23, 23, 23, 23),
    '元素爆破师-魔法师(男)': (23, 23, 23, 23),
    '冰结师-魔法师(男)': (23, 23, 23, 23),
    '血法师-魔法师(男)': (23, 23, 23, 23),
    '逐风者-魔法师(男)': (23, 23, 23, 23),
    '次元行者-魔法师(男)': (23, 23, 23, 23),
    '刺客-暗夜使者': (23, 23, 23, 23),
    '死灵术士-暗夜使者': (23, 23, 3, 43),
    '忍者-暗夜使者': (31, 23, 23, 23),
    '影舞者-暗夜使者': (23, 23, 23, 23),
    '缔造者-魔法师(女)': (23, 23, 23, 23),
    '黑暗武士-鬼剑士(男)': (23, 23, 3, 43),
    '剑魂-鬼剑士(男)': (23, 23, 3, 43),
    '鬼泣-鬼剑士(男)': (23, 23, -7, 63),
    '狂战士-鬼剑士(男)': (23, 23, 3, 43),
    '阿修罗-鬼剑士(男)': (23, 23, 3, 43),
    '剑影-鬼剑士(男)': (23, 23, 3, 43),
    '刃影-鬼剑士(女)': (23, 23, 3, 43),
    '驭剑士-鬼剑士(女)': (23, 23, 3, 43),
    '暗殿骑士-鬼剑士(女)': (23, 23, 3, 43),
    '契魔者-鬼剑士(女)': (23, 23, 3, 43),
    '流浪武士-鬼剑士(女)': (23, 23, 3, 43),
    '圣骑士-圣职者(男)': (23, 23, 23, 23),
    '蓝拳圣使-圣职者(男)': (23, 23, 23, 23),
    '驱魔师-圣职者(男)': (23, 23, 23, 23),
    '复仇者-圣职者(男)': (23, 23, 23, 23),
    '圣骑士-圣职者(女)': (23, 23, 43, 23),
    '异端审判者-圣职者(女)': (23, 23, 23, 23),
    '巫女-圣职者(女)': (23, 23, 23, 23),
    '诱魔者-圣职者(女)': (23, 23, 23, 23)
}

# 出血 中毒 灼烧 感电 冰冻 减速 眩晕 诅咒 失明 石化 睡眠 混乱 束缚
职业异常抗性数据 = {
    '征战者-魔枪士': (0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0),
    '决战者-魔枪士': (0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0),
    '狩猎者-魔枪士': (0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0),
    '暗枪士-魔枪士': (0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0),
    '气功师-格斗家(女)': (0, 0, 0, 0, 0, 0, 0, 0, 0.05, 0, 0, 0, 0),
    '散打-格斗家(女)': (0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0),
    '街霸-格斗家(女)': (0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0),
    '柔道家-格斗家(女)': (0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0),
    '气功师-格斗家(男)': (0, 0, 0, 0, 0, 0, 0, 0, 0.05, 0, 0, 0, 0),
    '散打-格斗家(男)': (0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0),
    '街霸-格斗家(男)': (0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0),
    '柔道家-格斗家(男)': (0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0),
    '暗刃-枪剑士': (0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0),
    '特工-枪剑士': (0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0),
    '战线佣兵-枪剑士': (0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0),
    '源能专家-枪剑士': (0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0),
    '漫游枪手-神枪手(女)': (0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0),
    '枪炮师-神枪手(女)': (0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0),
    '机械师-神枪手(女)': (0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0),
    '弹药专家-神枪手(女)': (0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0),
    '漫游枪手-神枪手(男)': (0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0),
    '枪炮师-神枪手(男)': (0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0),
    '机械师-神枪手(男)': (0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0),
    '弹药专家-神枪手(男)': (0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0),
    '合金战士-神枪手(男)': (0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0),
    '精灵骑士-守护者': (0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0),
    '混沌魔灵-守护者': (0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0),
    '帕拉丁-守护者': (0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0),
    '龙骑士-守护者': (0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0),
    '元素师-魔法师(女)': (0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0),
    '召唤师-魔法师(女)': (0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0),
    '战斗法师-魔法师(女)': (0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0),
    '魔道学者-魔法师(女)': (0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0),
    '小魔女-魔法师(女)': (0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0),
    '元素爆破师-魔法师(男)': (0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0),
    '冰结师-魔法师(男)': (0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0),
    '血法师-魔法师(男)': (0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0),
    '逐风者-魔法师(男)': (0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0),
    '次元行者-魔法师(男)': (0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0),
    '刺客-暗夜使者': (0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0),
    '死灵术士-暗夜使者': (0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0),
    '忍者-暗夜使者': (0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0),
    '影舞者-暗夜使者': (0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0),
    '缔造者-魔法师(女)': (0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0),
    '黑暗武士-鬼剑士(男)': (0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0),
    '剑魂-鬼剑士(男)': (0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0),
    '鬼泣-鬼剑士(男)': (0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0),
    '狂战士-鬼剑士(男)': (0, 0, 0, 0, 0, 0, 0.95, 0, 0, 0, 0.95, 0, 0),
    '阿修罗-鬼剑士(男)': (0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0),
    '剑影-鬼剑士(男)': (0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0),
    '刃影-鬼剑士(女)': (0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0),
    '驭剑士-鬼剑士(女)': (0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0),
    '暗殿骑士-鬼剑士(女)': (0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0),
    '契魔者-鬼剑士(女)': (0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0),
    '流浪武士-鬼剑士(女)': (0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0),
    '圣骑士-圣职者(男)': (0.05, 0.05, 0.05, 0.05, 0.05, 0.05, 0.05, 0.05, 0.05, 0.05, 0.05, 0, 0.05),
    '蓝拳圣使-圣职者(男)': (0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0),
    '驱魔师-圣职者(男)': (0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0),
    '复仇者-圣职者(男)': (0.3, 0.3, 0.3, 0.3, 0.3, 0.3, 0.3, 0.3, 0.3, 0.3, 0.3, 0.3, 0.3),
    '圣骑士-圣职者(女)': (0.05, 0.05, 0.05, 0.05, 0.05, 0.05, 0.05, 0.05, 0.05, 0.05, 0.05, 0.05, 0.05),
    '异端审判者-圣职者(女)': (0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0),
    '巫女-圣职者(女)': (0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0),
    '诱魔者-圣职者(女)': (0, 0, 0, 0, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5)
}


def 获取基础属性(角色, 职业):

    角色数据 = 角色基础系数[角色]
    职业数据 = 职业基础数据[职业 + '-' + 角色]

    唤醒 = (335 if 当前等级 >= 75 else (145 if 当前等级 >= 15 else 0))

    力量 = int(角色数据[4] + 角色数据[0] * min(14, 当前等级 - 1) +
             职业数据[0] * max(当前等级 - 15, 0) + 唤醒 + 2.1 * min(71, 当前等级))
    体力 = int(角色数据[5] + 角色数据[1] * min(14, 当前等级 - 1) +
             职业数据[1] * max(当前等级 - 15, 0) + 唤醒 + 2.0 * min(71, 当前等级))
    智力 = int(角色数据[6] + 角色数据[2] * min(14, 当前等级 - 1) +
             职业数据[2] * max(当前等级 - 15, 0) + 唤醒 + 2.1 * min(71, 当前等级))
    精神 = int(角色数据[7] + 角色数据[3] * min(14, 当前等级 - 1) +
             职业数据[3] * max(当前等级 - 15, 0) + 唤醒 + 2.0 * min(71, 当前等级))
    return (力量, 智力, 体力, 精神)


def 获取属性抗性基础(角色, 职业):
    return 职业属性抗性数据[职业 + '-' + 角色]


def 获取异常抗性基础(角色, 职业):
    return 职业异常抗性数据[职业 + '-' + 角色]


刀魂之卡赞 = (
    0, 31, 40, 48, 58, 67, 79, 90, 103, 116, 131, 145, 161, 178, 194, 212, 230,
    250, 270, 292, 313
)

部位列表 = ("上衣", "头肩", "下装", "腰带", "鞋", "手镯", "项链", "戒指", "耳环", "辅助装备", "魔法石",
        "武器")

# 成长词条系数 = (0, 3, 5, 8, 10, 13, 16, 18, 21, 24, 34, 37, 40, 43, 46, 49, 51, 54, 56, 59, 74, 76, 79, 81, 84, 86, 88, 91, 93, 96, 109, 111, 113, 116,
#          118, 121, 123, 125, 128, 130, 143, 145, 148, 150, 152, 154, 156, 159, 161, 163, 174, 176, 178, 179, 181, 183, 185, 187, 188, 190, 199,
#          201, 203, 205, 207, 209, 211, 212, 214)
成长词条系数 = (1, 1.01916, 1.03827, 1.058, 1.07687, 1.09656, 1.11528, 1.13493, 1.1544, 1.26587, 1.2848, 1.30439, 1.32318, 1.3426, 1.36218, 1.38126, 1.40083,
          1.41971, 1.4392, 1.5506, 1.56817, 1.58635, 1.60407, 1.62215, 1.63952, 1.65725, 1.67538, 1.69302, 1.71124, 1.80755, 1.82534, 1.84288, 1.86092,
          1.87863, 1.89676, 1.91433, 1.93196, 1.94988, 1.9677, 2.06429, 2.08039, 2.09719, 2.11328, 2.12961, 2.14594, 2.16227, 2.17869, 2.19498, 2.21126,
          2.29291, 2.30629, 2.31978, 2.33293, 2.34635, 2.35971, 2.37319, 2.38644, 2.3998, 2.41316, 2.47996, 2.49339, 2.50689, 2.52005, 2.53341, 2.54672,
          2.56013, 2.57349, 2.58711, 2.59998, 2.66679, 2.68038, 2.69374, 2.70722, 2.72072, 2.73376, 2.74706, 2.76042, 2.77386, 2.78735, 2.85399)

奶成长词条系数 = (1, 1.0184, 1.0369, 1.0559, 1.0753, 1.093, 1.1125, 1.1308, 1.1493, 1.2602, 1.2794, 1.2975, 1.3168, 1.3353, 1.3546, 1.3731, 1.3919, 1.4107,
           1.4294, 1.5397, 1.5565, 1.5733, 1.5898, 1.6065, 1.6232, 1.64, 1.6559, 1.6729, 1.6899, 1.7858, 1.8023, 1.8192, 1.8359, 1.8525, 1.8684, 1.8858,
           1.9024, 1.9191, 1.9358, 2.0318, 2.0485, 2.0651, 2.0808, 2.0983, 2.1151, 2.1317, 2.1485, 2.1648, 2.1817, 2.263, 2.2755, 2.2875, 2.3003, 2.3131,
           2.3256, 2.338, 2.3505, 2.3629, 2.3754, 2.4423, 2.4547, 2.467, 2.4798, 2.4915, 2.5041, 2.5173, 2.5297, 2.5421, 2.5548, 2.6193, 2.6314, 2.6444,
           2.657, 2.6694, 2.6815, 2.6937, 2.706, 2.7187, 2.7309, 2.7948)


def 成长词条计算(基础, 等级):
    if 等级 > 81:
        raise Exception("目前最大支持到80级")
    if 等级 == 1:
        return 基础
    return round(134.72 * round(基础 / 134.72, 2) * 成长词条系数[min(80, 等级 - 1)])


def 奶成长词条计算(基础, 等级):
    if 等级 > 81:
        等级 = 81
        # raise Exception("目前最大支持到80级")
    if 等级 == 1:
        return 基础
    if 基础 in [474, 479, 484, 489, 494, 499, 504, 509, 514, 464]:
        return round(134.72 * round(基础 / 134.72, 2) * 成长词条系数[min(80, 等级 - 1)])
    else:
        return round(159.96 * round(基础 / 159.96, 2) * 奶成长词条系数[min(80, 等级 - 1)])

# region 详细数值


attack_info = {
    "135": [
        0, 135, 137, 140, 143, 145, 148, 150, 153, 156, 171, 173, 176, 178, 181, 184, 186, 189, 191, 194, 209, 211, 214, 216, 219, 221, 223, 226, 228, 231, 244, 246, 248, 251, 253, 256, 258, 260, 263,
        265, 278, 280, 283, 285, 287, 289, 291, 294, 296, 298, 309, 311, 313, 314, 316, 318, 320, 322, 323, 325, 334, 336, 338, 340, 341, 343, 345, 347, 349, 350, 359, 361, 363, 365, 367, 368, 370, 372,
        374, 376, 385
    ],
    "269": [
        0, 269, 275, 280, 285, 290, 295, 301, 306, 311, 341, 346, 351, 357, 362, 367, 372, 377, 383, 388, 418, 423, 427, 432, 437, 442, 447, 451, 456, 461, 487, 492, 497, 501, 506, 511, 516, 521, 525,
        530, 556, 561, 565, 569, 574, 578, 583, 587, 591, 596, 618, 621, 625, 629, 632, 636, 639, 643, 647, 650, 668, 672, 675, 679, 683, 686, 690, 693, 697, 701, 719, 722, 726, 729, 733, 737, 740, 744,
        747, 751, 769
    ],
    "404": [
        0, 404, 412, 420, 428, 435, 443, 451, 459, 467, 512, 519, 527, 535, 543, 551, 558, 566, 574, 582, 627, 634, 641, 648, 656, 663, 670, 677, 684, 692, 731, 738, 745, 752, 759, 767, 774, 781, 788,
        795, 834, 841, 848, 854, 861, 867, 874, 881, 887, 894, 927, 932, 938, 943, 948, 954, 959, 965, 970, 975, 1002, 1008, 1013, 1019, 1024, 1029, 1035, 1040, 1046, 1051, 1078, 1083, 1089, 1094, 1100,
        1105, 1110, 1116, 1121, 1127, 1154
    ],
    "539": [
        0, 539, 549, 560, 570, 580, 591, 601, 612, 622, 682, 692, 703, 713, 724, 734, 744, 755, 765, 776, 836, 845, 855, 864, 874, 884, 893, 903, 912, 922, 974, 984, 993, 1003, 1012, 1022, 1032, 1041,
        1051, 1060, 1112, 1121, 1130, 1139, 1148, 1156, 1165, 1174, 1183, 1192, 1236, 1243, 1250, 1257, 1264, 1272, 1279, 1286, 1293, 1300, 1336, 1344, 1351, 1358, 1365, 1372, 1380, 1387, 1394, 1401,
        1437, 1444, 1452, 1459, 1466, 1473, 1480, 1488, 1495, 1502, 1538
    ],
    "674": [
        0, 674, 687, 700, 713, 726, 739, 752, 765, 778, 853, 866, 879, 892, 905, 918, 931, 944, 957, 970, 1045, 1057, 1069, 1081, 1093, 1105, 1117, 1129, 1141, 1153, 1218, 1230, 1242, 1254, 1266, 1278,
        1290, 1302, 1314, 1326, 1391, 1402, 1413, 1424, 1435, 1446, 1457, 1468, 1479, 1490, 1545, 1554, 1563, 1572, 1581, 1590, 1599, 1608, 1617, 1626, 1671, 1680, 1689, 1698, 1707, 1716, 1725, 1734,
        1743, 1752, 1797, 1806, 1815, 1824, 1833, 1842, 1851, 1860, 1869, 1878, 1923
    ],
    "808": [
        0, 808, 824, 839, 855, 871, 886, 902, 917, 933, 1023, 1039, 1054, 1070, 1085, 1101, 1117, 1132, 1148, 1163, 1253, 1268, 1282, 1297, 1311, 1325, 1340, 1354, 1369, 1383, 1461, 1475, 1490, 1504,
        1519, 1533, 1547, 1562, 1576, 1591, 1669, 1682, 1695, 1708, 1721, 1735, 1748, 1761, 1774, 1787, 1853, 1864, 1875, 1886, 1897, 1907, 1918, 1929, 1940, 1951, 2005, 2015, 2026, 2037, 2048, 2059,
        2069, 2080, 2091, 2102, 2156, 2167, 2177, 2188, 2199, 2210, 2221, 2231, 2242, 2253, 2307
    ],
    "943": [
        0, 943, 961, 979, 998, 1016, 1034, 1052, 1070, 1089, 1194, 1212, 1230, 1248, 1266, 1285, 1303, 1321, 1339, 1357, 1462, 1479, 1496, 1513, 1530, 1546, 1563, 1580, 1597, 1614, 1705, 1721, 1738, 1755,
        1772, 1789, 1805, 1822, 1839, 1856, 1947, 1962, 1978, 1993, 2008, 2024, 2039, 2055, 2070, 2085, 2162, 2175, 2188, 2200, 2213, 2225, 2238, 2251, 2263, 2276, 2339, 2351, 2364, 2377, 2389, 2402,
        2414, 2427, 2440, 2452, 2515, 2528, 2540, 2553, 2566, 2578, 2591, 2603, 2616, 2629, 2692
    ],
    "1078": [
        0, 1078, 1098, 1119, 1140, 1161, 1182, 1202, 1223, 1244, 1364, 1385, 1406, 1426, 1447, 1468, 1489, 1510, 1530, 1551, 1671, 1690, 1710, 1729, 1748, 1767, 1786, 1806, 1825, 1844, 1948, 1967, 1986,
        2006, 2025, 2044, 2063, 2082, 2102, 2121, 2225, 2242, 2260, 2278, 2295, 2313, 2330, 2348, 2366, 2383, 2471, 2486, 2500, 2514, 2529, 2543, 2558, 2572, 2586, 2601, 2673, 2687, 2702, 2716, 2730,
        2745, 2759, 2774, 2788, 2802, 2874, 2889, 2903, 2918, 2932, 2946, 2961, 2975, 2990, 3004, 3076
    ],
    "1212": [
        0, 1212, 1236, 1259, 1283, 1306, 1329, 1353, 1376, 1400, 1535, 1558, 1581, 1605, 1628, 1652, 1675, 1698, 1722, 1745, 1880, 1902, 1923, 1945, 1967, 1988, 2010, 2031, 2053, 2075, 2192, 2213, 2235,
        2256, 2278, 2300, 2321, 2343, 2364, 2386, 2503, 2523, 2543, 2562, 2582, 2602, 2622, 2642, 2661, 2681, 2780, 2796, 2813, 2829, 2845, 2861, 2877, 2894, 2910, 2926, 3007, 3023, 3039, 3056, 3072,
        3088, 3104, 3120, 3137, 3153, 3234, 3250, 3266, 3282, 3299, 3315, 3331, 3347, 3363, 3380, 3461
    ],
    "1347": [
        0, 1347, 1373, 1399, 1425, 1451, 1477, 1503, 1529, 1555, 1705, 1731, 1757, 1783, 1809, 1835, 1861, 1887, 1913, 1939, 2089, 2113, 2137, 2161, 2185, 2209, 2233, 2257, 2281, 2305, 2435, 2459, 2483,
        2507, 2531, 2555, 2579, 2603, 2627, 2651, 2781, 2803, 2825, 2847, 2869, 2891, 2913, 2935, 2957, 2979, 3089, 3107, 3125, 3143, 3161, 3179, 3197, 3215, 3233, 3251, 3341, 3359, 3377, 3395, 3413,
        3431, 3449, 3467, 3485, 3503, 3593, 3611, 3629, 3647, 3665, 3683, 3701, 3719, 3737, 3755, 3845
    ],
    "1616": [
        0, 1616, 1648, 1679, 1710, 1741, 1772, 1804, 1835, 1866, 2046, 2077, 2108, 2140, 2171, 2202, 2233, 2264, 2296, 2327, 2507, 2536, 2564, 2593, 2622, 2651, 2680, 2708, 2737, 2766, 2922, 2951, 2980,
        3008, 3037, 3066, 3095, 3124, 3152, 3181, 3337, 3364, 3390, 3416, 3443, 3469, 3496, 3522, 3548, 3575, 3707, 3728, 3750, 3772, 3793, 3815, 3836, 3858, 3880, 3901, 4009, 4031, 4052, 4074, 4096,
        4117, 4139, 4160, 4182, 4204, 4312, 4333, 4355, 4376, 4398, 4420, 4441, 4463, 4484, 4506, 4614
    ],
    "1751": [
        0, 1751, 1785, 1819, 1853, 1886, 1920, 1954, 1988, 2022, 2217, 2250, 2284, 2318, 2352, 2386, 2419, 2453, 2487, 2521, 2716, 2747, 2778, 2809, 2841, 2872, 2903, 2934, 2965, 2997, 3166, 3197, 3228,
        3259, 3290, 3322, 3353, 3384, 3415, 3446, 3615, 3644, 3673, 3701, 3730, 3758, 3787, 3816, 3844, 3873, 4016, 4039, 4063, 4086, 4109, 4133, 4156, 4180, 4203, 4226, 4343, 4367, 4390, 4414, 4437,
        4460, 4484, 4507, 4531, 4554, 4671, 4694, 4718, 4741, 4765, 4788, 4811, 4835, 4858, 4882, 4999
    ],
    "1886": [
        0, 1886, 1922, 1959, 1995, 2031, 2068, 2104, 2141, 2177, 2387, 2423, 2460, 2496, 2533, 2569, 2605, 2642, 2678, 2715, 2925, 2958, 2992, 3025, 3059, 3093, 3126, 3160, 3193, 3227, 3409, 3443, 3476,
        3510, 3543, 3577, 3611, 3644, 3678, 3711, 3893, 3924, 3955, 3986, 4017, 4047, 4078, 4109, 4140, 4171, 4325, 4350, 4375, 4400, 4425, 4451, 4476, 4501, 4526, 4551, 4677, 4703, 4728, 4753, 4778,
        4803, 4829, 4854, 4879, 4904, 5030, 5055, 5081, 5106, 5131, 5156, 5181, 5207, 5232, 5257, 5383
    ],
    "2021": [
        0, 2021, 2060, 2099, 2138, 2177, 2216, 2255, 2294, 2333, 2558, 2597, 2636, 2675, 2714, 2753, 2792, 2831, 2870, 2909, 3134, 3170, 3206, 3242, 3278, 3314, 3350, 3386, 3422, 3458, 3653, 3689, 3725,
        3761, 3797, 3833, 3869, 3905, 3941, 3977, 4172, 4205, 4238, 4271, 4304, 4337, 4370, 4403, 4436, 4469, 4634, 4661, 4688, 4715, 4742, 4769, 4796, 4823, 4850, 4877, 5012, 5039, 5066, 5093, 5120,
        5147, 5174, 5201, 5228, 5255, 5390, 5417, 5444, 5471, 5498, 5525, 5552, 5579, 5606, 5633, 5768
    ],
    "2155": [
        0, 2155, 2197, 2238, 2280, 2322, 2363, 2405, 2446, 2488, 2728, 2770, 2811, 2853, 2894, 2936, 2978, 3019, 3061, 3102, 3342, 3381, 3419, 3458, 3496, 3534, 3573, 3611, 3650, 3688, 3896, 3934, 3973,
        4011, 4050, 4088, 4126, 4165, 4203, 4242, 4450, 4485, 4520, 4555, 4590, 4626, 4661, 4696, 4731, 4766, 4942, 4971, 5000, 5029, 5058, 5086, 5115, 5144, 5173, 5202, 5346, 5374, 5403, 5432, 5461,
        5490, 5518, 5547, 5576, 5605, 5749, 5778, 5806, 5835, 5864, 5893, 5922, 5950, 5979, 6008, 6152
    ],
    "2290": [
        0, 2290, 2334, 2378, 2423, 2467, 2511, 2555, 2599, 2644, 2899, 2943, 2987, 3031, 3075, 3120, 3164, 3208, 3252, 3296, 3551, 3592, 3633, 3674, 3715, 3755, 3796, 3837, 3878, 3919, 4140, 4180, 4221,
        4262, 4303, 4344, 4384, 4425, 4466, 4507, 4728, 4765, 4803, 4840, 4877, 4915, 4952, 4990, 5027, 5064, 5251, 5282, 5313, 5343, 5374, 5404, 5435, 5466, 5496, 5527, 5680, 5710, 5741, 5772, 5802,
        5833, 5863, 5894, 5925, 5955, 6108, 6139, 6169, 6200, 6231, 6261, 6292, 6322, 6353, 6384, 6537
    ],
    "2425": [
        0, 2425, 2471, 2518, 2565, 2612, 2659, 2705, 2752, 2799, 3069, 3116, 3163, 3209, 3256, 3303, 3350, 3397, 3443, 3490, 3760, 3803, 3847, 3890, 3933, 3976, 4019, 4063, 4106, 4149, 4383, 4426, 4469,
        4513, 4556, 4599, 4642, 4685, 4729, 4772, 5006, 5045, 5085, 5125, 5164, 5204, 5243, 5283, 5323, 5362, 5560, 5593, 5625, 5657, 5690, 5722, 5755, 5787, 5819, 5852, 6014, 6046, 6079, 6111, 6143,
        6176, 6208, 6241, 6273, 6305, 6467, 6500, 6532, 6565, 6597, 6629, 6662, 6694, 6727, 6759, 6921
    ],
    "2559": [
        0, 2559, 2609, 2658, 2708, 2757, 2806, 2856, 2905, 2955, 3240, 3289, 3338, 3388, 3437, 3487, 3536, 3585, 3635, 3684, 3969, 4015, 4060, 4106, 4152, 4197, 4243, 4288, 4334, 4380, 4627, 4672, 4718,
        4763, 4809, 4855, 4900, 4946, 4991, 5037, 5284, 5326, 5368, 5409, 5451, 5493, 5535, 5577, 5618, 5660, 5869, 5903, 5938, 5972, 6006, 6040, 6074, 6109, 6143, 6177, 6348, 6382, 6416, 6451, 6485,
        6519, 6553, 6587, 6622, 6656, 6827, 6861, 6895, 6929, 6964, 6998, 7032, 7066, 7100, 7135, 7306
    ],
    "2694": [
        0, 2694, 2746, 2798, 2850, 2902, 2954, 3006, 3058, 3110, 3410, 3462, 3514, 3566, 3618, 3670, 3722, 3774, 3826, 3878, 4178, 4226, 4274, 4322, 4370, 4418, 4466, 4514, 4562, 4610, 4870, 4918, 4966,
        5014, 5062, 5110, 5158, 5206, 5254, 5302, 5562, 5606, 5650, 5694, 5738, 5782, 5826, 5870, 5914, 5958, 6178, 6214, 6250, 6286, 6322, 6358, 6394, 6430, 6466, 6502, 6682, 6718, 6754, 6790, 6826,
        6862, 6898, 6934, 6970, 7006, 7186, 7222, 7258, 7294, 7330, 7366, 7402, 7438, 7474, 7510, 7690
    ],
    "148": [
        0, 148, 151, 154, 157, 160, 163, 165, 168, 171, 188, 190, 193, 196, 199, 202, 205, 208, 210, 213, 230, 232, 235, 238, 240, 243, 246, 248, 251, 254, 268, 271, 273, 276, 278, 281, 284, 286, 289,
        292, 306, 308, 311, 313, 316, 318, 320, 323, 325, 328, 340, 342, 344, 346, 348, 350, 352, 354, 356, 358, 368, 370, 372, 374, 375, 377, 379, 381, 383, 385, 395, 397, 399, 401, 403, 405, 407, 409,
        411, 413, 423
    ],
    "296": [
        0, 296, 302, 308, 314, 319, 325, 331, 336, 342, 375, 381, 387, 392, 398, 404, 409, 415, 421, 427, 460, 465, 470, 475, 481, 486, 491, 497, 502, 507, 536, 541, 546, 552, 557, 562, 567, 573, 578,
        583, 612, 617, 622, 626, 631, 636, 641, 646, 651, 655, 680, 684, 688, 691, 695, 699, 703, 707, 711, 715, 735, 739, 743, 747, 751, 755, 759, 763, 767, 771, 790, 794, 798, 802, 806, 810, 814, 818,
        822, 826, 846
    ],
    "445": [
        0, 445, 453, 462, 470, 479, 488, 496, 505, 513, 563, 571, 580, 588, 597, 606, 614, 623, 631, 640, 689, 697, 705, 713, 721, 729, 737, 745, 753, 761, 804, 812, 819, 827, 835, 843, 851, 859, 867,
        875, 918, 925, 932, 940, 947, 954, 961, 969, 976, 983, 1019, 1025, 1031, 1037, 1043, 1049, 1055, 1061, 1067, 1073, 1103, 1109, 1115, 1121, 1126, 1132, 1138, 1144, 1150, 1156, 1186, 1192, 1198,
        1204, 1210, 1215, 1221, 1227, 1233, 1239, 1269
    ],
    "593": [
        0, 593, 604, 616, 627, 638, 650, 661, 673, 684, 750, 762, 773, 784, 796, 808, 819, 830, 842, 853, 919, 930, 940, 951, 962, 972, 982, 993, 1004, 1014, 1072, 1082, 1092, 1103, 1114, 1124, 1135,
        1145, 1156, 1166, 1224, 1233, 1243, 1253, 1262, 1272, 1282, 1292, 1301, 1311, 1359, 1367, 1375, 1383, 1391, 1399, 1407, 1415, 1422, 1430, 1470, 1478, 1486, 1494, 1502, 1510, 1518, 1526, 1534,
        1541, 1581, 1589, 1597, 1605, 1613, 1620, 1628, 1636, 1644, 1652, 1692
    ],
    "741": [
        0, 741, 755, 770, 784, 798, 813, 827, 841, 856, 938, 952, 967, 981, 995, 1010, 1024, 1038, 1052, 1067, 1149, 1162, 1176, 1189, 1202, 1215, 1228, 1242, 1255, 1268, 1340, 1353, 1366, 1379, 1392,
        1406, 1419, 1432, 1445, 1458, 1530, 1542, 1554, 1566, 1578, 1590, 1602, 1615, 1627, 1639, 1699, 1709, 1719, 1729, 1739, 1749, 1759, 1769, 1778, 1788, 1838, 1848, 1858, 1868, 1877, 1887, 1897,
        1907, 1917, 1927, 1976, 1986, 1996, 2006, 2016, 2026, 2036, 2046, 2056, 2066, 2115
    ],
    "889": [
        0, 889, 906, 923, 941, 958, 975, 992, 1009, 1027, 1126, 1142, 1160, 1177, 1194, 1211, 1228, 1246, 1262, 1280, 1379, 1394, 1411, 1426, 1442, 1458, 1474, 1490, 1505, 1522, 1607, 1623, 1639, 1655,
        1670, 1687, 1702, 1718, 1734, 1750, 1835, 1850, 1865, 1879, 1894, 1908, 1922, 1937, 1952, 1966, 2039, 2051, 2063, 2074, 2086, 2098, 2110, 2122, 2134, 2146, 2205, 2217, 2229, 2241, 2252, 2264,
        2276, 2288, 2300, 2312, 2371, 2383, 2395, 2407, 2419, 2431, 2443, 2455, 2467, 2479, 2538
    ],
    "1037": [
        0, 1037, 1057, 1077, 1098, 1117, 1138, 1157, 1177, 1198, 1313, 1333, 1353, 1373, 1393, 1413, 1433, 1453, 1473, 1493, 1609, 1627, 1646, 1664, 1683, 1701, 1719, 1738, 1756, 1775, 1875, 1894, 1912,
        1931, 1949, 1968, 1986, 2004, 2023, 2041, 2141, 2158, 2176, 2192, 2209, 2226, 2243, 2260, 2277, 2294, 2379, 2393, 2407, 2420, 2434, 2448, 2462, 2476, 2489, 2503, 2573, 2587, 2601, 2615, 2628,
        2642, 2656, 2670, 2684, 2697, 2766, 2780, 2794, 2808, 2822, 2836, 2850, 2864, 2878, 2892, 2961
    ],
    "1186": [
        0, 1186, 1208, 1231, 1254, 1277, 1300, 1322, 1346, 1369, 1501, 1523, 1546, 1569, 1592, 1615, 1638, 1661, 1683, 1706, 1838, 1859, 1881, 1902, 1923, 1944, 1965, 1986, 2007, 2029, 2143, 2164, 2185,
        2206, 2227, 2249, 2270, 2290, 2312, 2333, 2447, 2466, 2486, 2506, 2525, 2544, 2563, 2583, 2602, 2622, 2718, 2734, 2750, 2766, 2782, 2798, 2814, 2830, 2845, 2861, 2940, 2956, 2972, 2988, 3003,
        3019, 3035, 3051, 3067, 3082, 3162, 3178, 3194, 3210, 3226, 3241, 3257, 3273, 3289, 3305, 3384
    ],
    "1334": [
        0, 1334, 1359, 1385, 1411, 1436, 1463, 1488, 1514, 1540, 1688, 1714, 1740, 1765, 1791, 1817, 1842, 1868, 1894, 1920, 2068, 2092, 2116, 2139, 2164, 2187, 2210, 2235, 2258, 2282, 2411, 2435, 2458,
        2482, 2506, 2530, 2553, 2577, 2601, 2624, 2753, 2775, 2797, 2819, 2840, 2862, 2884, 2906, 2928, 2949, 3058, 3076, 3094, 3111, 3129, 3147, 3165, 3183, 3200, 3218, 3308, 3326, 3344, 3362, 3379,
        3397, 3415, 3433, 3451, 3468, 3557, 3575, 3593, 3611, 3629, 3646, 3664, 3682, 3700, 3718, 3807
    ],
    "1482": [
        0, 1482, 1510, 1539, 1568, 1596, 1625, 1653, 1682, 1711, 1876, 1904, 1933, 1961, 1990, 2019, 2047, 2076, 2104, 2133, 2298, 2324, 2351, 2377, 2404, 2430, 2456, 2483, 2509, 2536, 2679, 2705, 2731,
        2758, 2784, 2811, 2837, 2863, 2890, 2916, 3059, 3083, 3108, 3132, 3156, 3180, 3204, 3229, 3253, 3277, 3398, 3418, 3438, 3457, 3477, 3497, 3517, 3537, 3556, 3576, 3675, 3695, 3715, 3735, 3754,
        3774, 3794, 3814, 3834, 3853, 3952, 3972, 3992, 4012, 4032, 4051, 4071, 4091, 4111, 4131, 4230
    ],
    "1630": [
        0, 1630, 1661, 1693, 1725, 1756, 1788, 1818, 1850, 1882, 2064, 2094, 2126, 2157, 2189, 2221, 2252, 2284, 2314, 2346, 2528, 2556, 2586, 2615, 2644, 2673, 2702, 2731, 2760, 2790, 2947, 2976, 3004,
        3034, 3062, 3092, 3121, 3149, 3179, 3208, 3365, 3391, 3419, 3445, 3472, 3498, 3524, 3552, 3578, 3605, 3738, 3760, 3782, 3803, 3825, 3847, 3869, 3891, 3912, 3934, 4043, 4065, 4087, 4109, 4129,
        4151, 4173, 4195, 4217, 4238, 4347, 4369, 4391, 4413, 4435, 4456, 4478, 4500, 4522, 4544, 4653
    ],
    "1778": [
        0, 1778, 1812, 1847, 1882, 1915, 1950, 1984, 2018, 2053, 2251, 2285, 2320, 2353, 2388, 2423, 2456, 2491, 2525, 2560, 2758, 2789, 2821, 2852, 2885, 2916, 2947, 2980, 3011, 3043, 3215, 3246, 3277,
        3310, 3341, 3373, 3404, 3436, 3468, 3499, 3671, 3700, 3730, 3758, 3787, 3816, 3845, 3875, 3904, 3932, 4078, 4102, 4126, 4148, 4172, 4196, 4220, 4244, 4267, 4291, 4410, 4434, 4458, 4482, 4505,
        4529, 4553, 4577, 4601, 4624, 4742, 4766, 4790, 4814, 4838, 4861, 4885, 4909, 4933, 4957, 5076
    ],
    "1927": [
        0, 1927, 1963, 2001, 2038, 2075, 2113, 2149, 2187, 2224, 2439, 2475, 2513, 2549, 2587, 2625, 2661, 2699, 2735, 2773, 2987, 3021, 3056, 3090, 3125, 3159, 3193, 3228, 3262, 3297, 3483, 3517, 3550,
        3585, 3619, 3654, 3688, 3722, 3757, 3791, 3977, 4008, 4040, 4072, 4103, 4134, 4165, 4198, 4229, 4260, 4417, 4443, 4469, 4494, 4520, 4546, 4572, 4598, 4623, 4649, 4778, 4804, 4830, 4856, 4880,
        4906, 4932, 4958, 4984, 5009, 5138, 5164, 5190, 5216, 5242, 5266, 5292, 5318, 5344, 5370, 5499
    ],
    "2075": [
        0, 2075, 2114, 2155, 2195, 2234, 2275, 2314, 2355, 2395, 2626, 2666, 2706, 2745, 2786, 2827, 2866, 2906, 2946, 2986, 3217, 3254, 3291, 3328, 3366, 3402, 3438, 3476, 3513, 3550, 3751, 3787, 3823,
        3861, 3898, 3935, 3972, 4008, 4046, 4082, 4283, 4316, 4351, 4385, 4418, 4452, 4486, 4521, 4554, 4588, 4757, 4785, 4813, 4840, 4868, 4896, 4924, 4952, 4978, 5006, 5145, 5173, 5201, 5229, 5256,
        5284, 5312, 5340, 5368, 5394, 5533, 5561, 5589, 5617, 5645, 5671, 5699, 5727, 5755, 5783, 5922
    ],
    "2223": [
        0, 2223, 2265, 2309, 2352, 2394, 2438, 2480, 2523, 2567, 2814, 2856, 2900, 2942, 2985, 3029, 3071, 3114, 3156, 3200, 3447, 3486, 3527, 3566, 3606, 3645, 3684, 3725, 3764, 3804, 4019, 4058, 4097,
        4137, 4176, 4217, 4256, 4295, 4335, 4374, 4589, 4625, 4662, 4698, 4734, 4770, 4806, 4844, 4880, 4916, 5097, 5127, 5157, 5186, 5216, 5246, 5276, 5306, 5334, 5364, 5513, 5543, 5573, 5603, 5631,
        5661, 5691, 5721, 5751, 5780, 5928, 5958, 5988, 6018, 6048, 6077, 6107, 6137, 6167, 6197, 6345
    ],
    "2371": [
        0, 2371, 2416, 2462, 2509, 2554, 2600, 2645, 2691, 2738, 3002, 3046, 3093, 3138, 3184, 3230, 3275, 3322, 3366, 3413, 3677, 3718, 3762, 3803, 3846, 3888, 3930, 3973, 4014, 4058, 4286, 4328, 4370,
        4413, 4454, 4498, 4539, 4581, 4624, 4666, 4894, 4933, 4973, 5011, 5050, 5088, 5126, 5166, 5205, 5243, 5437, 5469, 5501, 5531, 5563, 5595, 5627, 5659, 5690, 5722, 5880, 5912, 5944, 5976, 6006,
        6038, 6070, 6102, 6134, 6165, 6323, 6355, 6387, 6419, 6451, 6482, 6514, 6546, 6578, 6610, 6768
    ],
    "2519": [
        0, 2519, 2567, 2616, 2666, 2713, 2763, 2810, 2859, 2909, 3189, 3237, 3286, 3334, 3383, 3432, 3480, 3529, 3577, 3626, 3907, 3951, 3997, 4041, 4087, 4131, 4175, 4221, 4265, 4311, 4554, 4599, 4643,
        4689, 4733, 4779, 4823, 4867, 4913, 4957, 5200, 5241, 5284, 5324, 5365, 5406, 5447, 5489, 5530, 5571, 5777, 5811, 5845, 5877, 5911, 5945, 5979, 6013, 6045, 6079, 6248, 6282, 6316, 6350, 6382,
        6416, 6450, 6484, 6518, 6550, 6718, 6752, 6786, 6820, 6854, 6887, 6921, 6955, 6989, 7023, 7191
    ],
    "2668": [
        0, 2668, 2718, 2770, 2822, 2873, 2925, 2975, 3028, 3080, 3377, 3427, 3479, 3530, 3582, 3634, 3685, 3737, 3787, 3839, 4136, 4183, 4232, 4279, 4327, 4374, 4421, 4469, 4516, 4565, 4822, 4869, 4916,
        4964, 5011, 5060, 5107, 5153, 5202, 5249, 5506, 5549, 5594, 5638, 5681, 5724, 5767, 5812, 5855, 5899, 6116, 6152, 6188, 6223, 6259, 6295, 6331, 6367, 6401, 6437, 6615, 6651, 6687, 6723, 6757,
        6793, 6829, 6865, 6901, 6935, 7114, 7150, 7186, 7222, 7258, 7292, 7328, 7364, 7400, 7436, 7614
    ],
    "2816": [
        0, 2816, 2869, 2924, 2979, 3032, 3088, 3141, 3196, 3251, 3564, 3618, 3673, 3726, 3781, 3836, 3889, 3944, 3998, 4053, 4366, 4416, 4467, 4516, 4568, 4617, 4666, 4718, 4767, 4818, 5090, 5140, 5189,
        5240, 5290, 5341, 5390, 5440, 5491, 5540, 5812, 5858, 5905, 5951, 5996, 6042, 6088, 6135, 6181, 6226, 6456, 6494, 6532, 6568, 6606, 6644, 6682, 6720, 6756, 6794, 6983, 7021, 7059, 7097, 7133,
        7171, 7209, 7247, 7285, 7321, 7509, 7547, 7585, 7623, 7661, 7697, 7735, 7773, 7811, 7849, 8037
    ],
    "2964": [
        0, 2964, 3020, 3078, 3136, 3192, 3250, 3306, 3364, 3422, 3752, 3808, 3866, 3922, 3980, 4038, 4094, 4152, 4208, 4266, 4596, 4648, 4702, 4754, 4808, 4860, 4912, 4966, 5018, 5072, 5358, 5410, 5462,
        5516, 5568, 5622, 5674, 5726, 5780, 5832, 6118, 6166, 6216, 6264, 6312, 6360, 6408, 6458, 6506, 6554, 6796, 6836, 6876, 6914, 6954, 6994, 7034, 7074, 7112, 7152, 7350, 7390, 7430, 7470, 7508,
        7548, 7588, 7628, 7668, 7706, 7904, 7944, 7984, 8024, 8064, 8102, 8142, 8182, 8222, 8262, 8460
    ]
}

buffer_info = {
    "459": [
        0, 459, 467, 477, 485, 494, 502, 512, 521, 530, 581, 590, 598, 607, 616, 625, 633, 642, 652, 661, 711, 720, 728, 736, 744, 752, 761, 768, 777, 784, 829, 837, 845, 854, 862, 870, 878, 886, 895,
        903, 947, 955, 962, 970, 976, 985, 992, 999, 1007, 1015, 1052, 1057, 1065, 1070, 1076, 1083, 1088, 1095, 1101, 1107, 1138, 1144, 1149, 1157, 1162, 1168, 1174, 1180, 1187, 1192, 1223, 1229, 1236,
        1242, 1248, 1254, 1260, 1266, 1273, 1279, 1309
    ],
    "464": [
        0, 464, 472, 482, 490, 500, 508, 518, 526, 535, 587, 596, 604, 614, 623, 632, 640, 650, 659, 668, 719, 728, 736, 744, 753, 760, 769, 776, 786, 793, 838, 846, 855, 863, 871, 880, 888, 896, 904,
        913, 958, 965, 972, 981, 987, 995, 1003, 1010, 1018, 1026, 1064, 1069, 1076, 1082, 1087, 1095, 1100, 1107, 1113, 1119, 1151, 1156, 1162, 1169, 1175, 1181, 1187, 1193, 1200, 1205, 1236, 1243, 1249,
        1256, 1261, 1268, 1274, 1280, 1287, 1293, 1324
    ],
    "469": [
        0, 469, 477, 487, 496, 505, 513, 524, 532, 541, 593, 603, 611, 620, 630, 639, 647, 657, 666, 675, 726, 736, 744, 752, 761, 768, 777, 785, 794, 802, 847, 856, 864, 872, 881, 889, 897, 906, 914,
        923, 968, 976, 983, 991, 998, 1006, 1014, 1021, 1030, 1037, 1075, 1081, 1088, 1094, 1099, 1107, 1112, 1119, 1125, 1131, 1163, 1169, 1175, 1182, 1188, 1194, 1200, 1206, 1213, 1218, 1250, 1256,
        1263, 1269, 1275, 1282, 1288, 1294, 1301, 1307, 1338
    ],
    "474": [
        0, 474, 482, 493, 501, 510, 519, 529, 538, 547, 600, 609, 618, 627, 636, 646, 654, 664, 673, 682, 734, 744, 752, 760, 769, 776, 786, 793, 803, 810, 856, 865, 873, 882, 890, 899, 907, 916, 924,
        932, 979, 986, 994, 1002, 1009, 1017, 1025, 1032, 1041, 1048, 1087, 1092, 1100, 1105, 1111, 1119, 1124, 1131, 1137, 1143, 1176, 1182, 1187, 1195, 1200, 1207, 1213, 1219, 1226, 1231, 1263, 1270,
        1277, 1283, 1289, 1295, 1302, 1308, 1315, 1321, 1353
    ],
    "479": [
        0, 479, 487, 498, 506, 516, 524, 535, 543, 553, 606, 616, 624, 634, 643, 653, 661, 671, 680, 690, 742, 751, 760, 769, 777, 785, 794, 802, 811, 819, 865, 874, 883, 891, 900, 908, 917, 925, 934,
        942, 989, 997, 1004, 1013, 1019, 1028, 1036, 1043, 1052, 1059, 1098, 1104, 1112, 1117, 1123, 1131, 1136, 1143, 1150, 1155, 1188, 1194, 1200, 1207, 1213, 1220, 1226, 1232, 1239, 1245, 1277, 1283,
        1290, 1297, 1302, 1309, 1316, 1321, 1329, 1335, 1367
    ],
    "484": [
        0, 484, 492, 503, 512, 521, 530, 540, 549, 559, 612, 622, 631, 640, 650, 660, 668, 678, 687, 697, 750, 759, 768, 777, 785, 793, 803, 810, 820, 828, 875, 883, 892, 900, 909, 918, 926, 935, 944,
        952, 999, 1007, 1015, 1023, 1030, 1039, 1046, 1054, 1063, 1070, 1110, 1116, 1123, 1129, 1135, 1142, 1148, 1155, 1162, 1167, 1201, 1207, 1212, 1220, 1226, 1233, 1238, 1245, 1252, 1258, 1290, 1297,
        1304, 1310, 1316, 1323, 1330, 1335, 1343, 1349, 1381
    ],
    "489": [
        0, 489, 498, 508, 517, 527, 535, 546, 555, 565, 619, 629, 637, 647, 657, 666, 675, 685, 695, 704, 758, 767, 776, 785, 793, 801, 811, 819, 828, 836, 884, 892, 901, 910, 919, 927, 936, 945, 954,
        962, 1010, 1018, 1025, 1034, 1041, 1050, 1057, 1065, 1074, 1082, 1121, 1127, 1135, 1141, 1147, 1154, 1160, 1167, 1174, 1180, 1213, 1219, 1225, 1233, 1239, 1245, 1251, 1258, 1265, 1271, 1304, 1310,
        1317, 1324, 1330, 1337, 1343, 1349, 1357, 1363, 1396
    ],
    "494": [
        0, 494, 503, 514, 522, 532, 541, 552, 561, 570, 625, 635, 644, 654, 663, 673, 682, 692, 702, 711, 765, 775, 784, 793, 802, 809, 819, 827, 837, 845, 893, 902, 910, 919, 928, 937, 946, 955, 963,
        972, 1020, 1028, 1036, 1045, 1052, 1060, 1068, 1076, 1085, 1093, 1133, 1139, 1147, 1152, 1158, 1166, 1172, 1179, 1186, 1192, 1226, 1232, 1238, 1246, 1251, 1258, 1264, 1271, 1278, 1284, 1317, 1324,
        1331, 1338, 1344, 1350, 1357, 1363, 1371, 1377, 1410
    ],
    "499": [
        0, 499, 508, 519, 528, 538, 546, 557, 566, 576, 632, 642, 650, 660, 670, 680, 689, 699, 709, 719, 773, 783, 792, 801, 810, 818, 828, 836, 845, 853, 902, 911, 920, 929, 938, 946, 955, 964, 973,
        982, 1031, 1039, 1046, 1055, 1062, 1071, 1079, 1087, 1096, 1104, 1144, 1150, 1158, 1164, 1170, 1178, 1184, 1191, 1198, 1204, 1238, 1244, 1250, 1258, 1264, 1271, 1277, 1284, 1291, 1297, 1331, 1337,
        1344, 1351, 1357, 1364, 1371, 1377, 1385, 1391, 1425
    ],
    "504": [
        0, 504, 513, 524, 533, 543, 552, 563, 572, 582, 638, 648, 657, 667, 677, 687, 696, 706, 716, 726, 781, 791, 800, 809, 818, 826, 836, 844, 854, 862, 911, 920, 929, 938, 947, 956, 965, 974, 983,
        992, 1041, 1049, 1057, 1066, 1073, 1082, 1090, 1098, 1107, 1115, 1156, 1162, 1170, 1176, 1182, 1190, 1196, 1203, 1210, 1216, 1251, 1257, 1263, 1271, 1277, 1284, 1290, 1297, 1304, 1310, 1344, 1351,
        1358, 1365, 1371, 1378, 1385, 1391, 1399, 1405, 1439
    ],
    "509": [
        0, 509, 518, 529, 538, 548, 558, 569, 578, 588, 644, 654, 664, 674, 684, 694, 703, 713, 723, 733, 789, 799, 808, 817, 826, 834, 844, 852, 863, 871, 920, 929, 938, 947, 956, 966, 975, 984, 993,
        1002, 1051, 1059, 1068, 1077, 1084, 1093, 1101, 1109, 1118, 1126, 1168, 1174, 1182, 1188, 1194, 1202, 1208, 1215, 1222, 1228, 1264, 1270, 1276, 1284, 1290, 1297, 1303, 1310, 1317, 1323, 1357,
        1365, 1372, 1379, 1385, 1392, 1399, 1405, 1413, 1419, 1453
    ],
    "514": [
        0, 514, 523, 534, 544, 554, 563, 574, 583, 594, 651, 661, 670, 680, 691, 701, 710, 720, 730, 741, 797, 807, 816, 825, 834, 843, 853, 861, 871, 879, 929, 938, 948, 957, 966, 975, 984, 993, 1003,
        1012, 1062, 1070, 1078, 1087, 1094, 1104, 1112, 1120, 1129, 1137, 1179, 1185, 1193, 1200, 1206, 1214, 1220, 1227, 1234, 1240, 1276, 1282, 1288, 1296, 1303, 1310, 1316, 1323, 1330, 1336, 1371,
        1378, 1385, 1392, 1398, 1406, 1413, 1419, 1427, 1433, 1468
    ],
    "519": [
        0, 519, 528, 540, 549, 559, 569, 580, 589, 599, 657, 667, 677, 687, 697, 708, 717, 727, 737, 748, 804, 815, 824, 833, 843, 851, 861, 869, 880, 888, 938, 948, 957, 966, 975, 985, 994, 1003, 1012,
        1022, 1072, 1080, 1089, 1098, 1105, 1114, 1123, 1131, 1140, 1148, 1191, 1197, 1205, 1211, 1217, 1226, 1232, 1239, 1246, 1252, 1289, 1295, 1301, 1309, 1315, 1323, 1329, 1336, 1343, 1349, 1384,
        1392, 1399, 1406, 1412, 1419, 1427, 1433, 1441, 1447, 1482
    ],
    "524": [
        0, 524, 534, 545, 554, 565, 574, 586, 595, 605, 664, 674, 683, 694, 704, 714, 724, 734, 745, 755, 812, 823, 832, 841, 851, 859, 869, 878, 888, 896, 947, 957, 966, 976, 985, 994, 1004, 1013, 1022,
        1032, 1083, 1091, 1099, 1109, 1116, 1125, 1134, 1142, 1151, 1160, 1202, 1208, 1217, 1223, 1229, 1238, 1244, 1251, 1258, 1265, 1301, 1307, 1314, 1322, 1328, 1335, 1342, 1349, 1356, 1362, 1398,
        1405, 1412, 1420, 1426, 1433, 1440, 1447, 1455, 1461, 1497
    ],
    "529": [
        0, 529, 539, 550, 560, 570, 580, 591, 601, 611, 670, 680, 690, 700, 711, 721, 731, 741, 752, 762, 820, 831, 840, 849, 859, 867, 878, 886, 897, 905, 957, 966, 975, 985, 994, 1004, 1013, 1023, 1032,
        1042, 1093, 1101, 1110, 1119, 1127, 1136, 1145, 1153, 1162, 1171, 1214, 1220, 1229, 1235, 1241, 1250, 1256, 1263, 1271, 1277, 1314, 1320, 1326, 1335, 1341, 1348, 1355, 1362, 1369, 1376, 1411,
        1419, 1426, 1433, 1440, 1447, 1454, 1461, 1469, 1475, 1511
    ],
    "534": [
        0, 534, 544, 555, 565, 576, 585, 597, 606, 617, 676, 687, 696, 707, 718, 728, 738, 748, 759, 770, 828, 838, 848, 858, 867, 876, 886, 895, 905, 914, 966, 975, 985, 994, 1004, 1013, 1023, 1032,
        1042, 1052, 1103, 1112, 1120, 1130, 1137, 1147, 1155, 1164, 1173, 1182, 1225, 1232, 1240, 1247, 1253, 1261, 1268, 1275, 1283, 1289, 1326, 1332, 1339, 1347, 1354, 1361, 1367, 1375, 1382, 1389,
        1425, 1432, 1439, 1447, 1453, 1461, 1468, 1474, 1483, 1489, 1525
    ],
    "539": [
        0, 539, 549, 561, 570, 581, 591, 602, 612, 623, 683, 693, 703, 714, 724, 735, 745, 755, 766, 777, 836, 846, 856, 866, 875, 884, 895, 903, 914, 922, 975, 984, 994, 1004, 1013, 1023, 1033, 1042,
        1052, 1061, 1114, 1122, 1131, 1141, 1148, 1158, 1166, 1175, 1184, 1193, 1237, 1243, 1252, 1258, 1265, 1273, 1280, 1287, 1295, 1301, 1339, 1345, 1351, 1360, 1366, 1374, 1380, 1388, 1395, 1402,
        1438, 1446, 1453, 1461, 1467, 1474, 1482, 1488, 1497, 1503, 1540
    ],
    "544": [
        0, 544, 554, 566, 576, 586, 596, 608, 618, 629, 689, 700, 710, 720, 731, 742, 752, 762, 773, 784, 843, 854, 864, 874, 883, 892, 903, 912, 922, 931, 984, 994, 1003, 1013, 1023, 1032, 1042, 1052,
        1062, 1071, 1124, 1133, 1142, 1151, 1159, 1169, 1177, 1186, 1196, 1204, 1248, 1255, 1264, 1270, 1277, 1285, 1292, 1299, 1307, 1313, 1351, 1358, 1364, 1373, 1379, 1387, 1393, 1401, 1408, 1415,
        1452, 1459, 1467, 1474, 1481, 1488, 1496, 1502, 1511, 1517, 1554
    ],
    "549": [
        0, 549, 559, 571, 581, 592, 602, 614, 623, 634, 695, 706, 716, 727, 738, 749, 759, 770, 780, 791, 851, 862, 872, 882, 892, 900, 911, 920, 931, 940, 993, 1003, 1013, 1022, 1032, 1042, 1052, 1062,
        1071, 1081, 1135, 1143, 1152, 1162, 1170, 1179, 1188, 1197, 1207, 1215, 1260, 1267, 1275, 1282, 1288, 1297, 1304, 1311, 1319, 1325, 1364, 1370, 1377, 1385, 1392, 1400, 1406, 1414, 1421, 1428,
        1465, 1473, 1480, 1488, 1494, 1502, 1510, 1516, 1525, 1531, 1569
    ],
    "554": [
        0, 554, 564, 576, 586, 597, 607, 619, 629, 640, 702, 713, 723, 734, 745, 756, 766, 777, 788, 799, 859, 870, 880, 890, 900, 909, 920, 928, 939, 948, 1002, 1012, 1022, 1032, 1042, 1052, 1062, 1071,
        1081, 1091, 1145, 1154, 1163, 1173, 1180, 1190, 1199, 1208, 1218, 1227, 1272, 1278, 1287, 1294, 1300, 1309, 1316, 1323, 1331, 1338, 1376, 1383, 1389, 1398, 1405, 1412, 1419, 1427, 1434, 1441,
        1478, 1486, 1494, 1502, 1508, 1516, 1524, 1530, 1539, 1546, 1583
    ],
    "437": [
        0, 437, 445, 453, 461, 470, 478, 486, 494, 502, 551, 559, 567, 575, 583, 592, 600, 608, 616, 624, 672, 680, 687, 694, 702, 709, 716, 723, 731, 738, 780, 787, 794, 802, 809, 816, 824, 831, 838,
        845, 887, 895, 902, 909, 916, 924, 931, 938, 945, 953, 988, 994, 999, 1005, 1010, 1016, 1021, 1026, 1032, 1037, 1067, 1072, 1077, 1083, 1088, 1094, 1099, 1105, 1110, 1116, 1144, 1149, 1155, 1160,
        1166, 1171, 1177, 1182, 1188, 1193, 1221
    ],
    "442": [
        0, 442, 450, 458, 466, 475, 483, 491, 500, 508, 557, 565, 573, 581, 590, 598, 606, 615, 623, 631, 680, 687, 695, 702, 709, 717, 724, 731, 739, 746, 788, 796, 803, 811, 818, 825, 833, 840, 847,
        855, 897, 904, 912, 919, 926, 934, 941, 949, 956, 963, 999, 1005, 1010, 1016, 1021, 1027, 1032, 1038, 1043, 1049, 1078, 1084, 1089, 1095, 1100, 1106, 1111, 1117, 1122, 1128, 1156, 1162, 1167,
        1173, 1179, 1184, 1190, 1195, 1201, 1206, 1235
    ],
    "446": [
        0, 446, 455, 463, 472, 480, 488, 497, 505, 513, 563, 571, 579, 588, 596, 605, 613, 621, 630, 638, 687, 695, 702, 710, 717, 724, 732, 739, 747, 754, 797, 804, 812, 819, 827, 834, 842, 849, 857,
        864, 907, 914, 922, 929, 937, 944, 951, 959, 966, 974, 1010, 1016, 1021, 1027, 1032, 1038, 1043, 1049, 1055, 1060, 1090, 1096, 1101, 1107, 1112, 1118, 1123, 1129, 1135, 1140, 1169, 1175, 1180,
        1186, 1191, 1197, 1202, 1208, 1214, 1219, 1248
    ],
    "451": [
        0, 451, 460, 468, 477, 485, 494, 502, 510, 519, 569, 577, 586, 594, 603, 611, 619, 628, 636, 645, 695, 702, 710, 717, 725, 732, 740, 747, 755, 762, 806, 813, 821, 828, 836, 843, 851, 858, 866,
        873, 917, 924, 932, 939, 947, 954, 962, 969, 977, 984, 1021, 1026, 1032, 1038, 1043, 1049, 1055, 1060, 1066, 1072, 1102, 1107, 1113, 1119, 1124, 1130, 1136, 1141, 1147, 1152, 1182, 1187, 1193,
        1199, 1204, 1210, 1215, 1221, 1227, 1232, 1261
    ],
    "456": [
        0, 456, 465, 473, 482, 490, 499, 507, 516, 524, 575, 583, 592, 600, 609, 618, 626, 635, 643, 652, 702, 710, 717, 725, 732, 740, 748, 755, 763, 770, 814, 822, 829, 837, 845, 852, 860, 867, 875,
        883, 926, 934, 941, 949, 957, 964, 972, 979, 987, 995, 1032, 1037, 1043, 1049, 1055, 1060, 1066, 1072, 1077, 1083, 1113, 1119, 1125, 1131, 1136, 1142, 1148, 1153, 1159, 1165, 1194, 1200, 1206,
        1211, 1217, 1223, 1228, 1234, 1240, 1245, 1275
    ],
    "461": [
        0, 461, 469, 478, 487, 495, 504, 513, 521, 530, 581, 589, 598, 607, 615, 624, 633, 641, 650, 659, 709, 717, 725, 732, 740, 748, 756, 763, 771, 779, 823, 830, 838, 846, 853, 861, 869, 876, 884,
        892, 936, 944, 951, 959, 967, 974, 982, 990, 997, 1005, 1043, 1048, 1054, 1060, 1066, 1071, 1077, 1083, 1089, 1094, 1125, 1131, 1137, 1142, 1148, 1154, 1160, 1165, 1171, 1177, 1207, 1212, 1218,
        1224, 1230, 1236, 1241, 1247, 1253, 1259, 1288
    ],
    "466": [
        0, 466, 474, 483, 492, 501, 509, 518, 527, 535, 587, 596, 604, 613, 622, 631, 639, 648, 657, 665, 717, 725, 732, 740, 748, 756, 763, 771, 779, 787, 831, 839, 847, 855, 862, 870, 878, 886, 893,
        901, 946, 954, 961, 969, 977, 985, 992, 1000, 1008, 1016, 1053, 1059, 1065, 1071, 1077, 1083, 1088, 1094, 1100, 1106, 1137, 1143, 1148, 1154, 1160, 1166, 1172, 1178, 1183, 1189, 1219, 1225, 1231,
        1237, 1243, 1248, 1254, 1260, 1266, 1272, 1302
    ],
    "470": [
        0, 470, 479, 488, 497, 506, 515, 523, 532, 541, 593, 602, 611, 619, 628, 637, 646, 655, 663, 672, 724, 732, 740, 748, 756, 763, 771, 779, 787, 795, 840, 848, 856, 863, 871, 879, 887, 895, 903,
        910, 956, 963, 971, 979, 987, 995, 1003, 1010, 1018, 1026, 1064, 1070, 1076, 1082, 1088, 1094, 1100, 1105, 1111, 1117, 1149, 1154, 1160, 1166, 1172, 1178, 1184, 1190, 1196, 1201, 1232, 1238, 1244,
        1250, 1255, 1261, 1267, 1273, 1279, 1285, 1315
    ],
    "475": [
        0, 475, 484, 493, 502, 511, 520, 529, 538, 546, 599, 608, 617, 626, 635, 644, 652, 661, 670, 679, 732, 740, 747, 755, 763, 771, 779, 787, 795, 803, 848, 856, 864, 872, 880, 888, 896, 904, 912,
        920, 965, 973, 981, 989, 997, 1005, 1013, 1021, 1029, 1037, 1075, 1081, 1087, 1093, 1099, 1105, 1111, 1117, 1123, 1129, 1160, 1166, 1172, 1178, 1184, 1190, 1196, 1202, 1208, 1214, 1244, 1250,
        1256, 1262, 1268, 1274, 1280, 1286, 1292, 1298, 1329
    ],
    "480": [
        0, 480, 489, 498, 507, 516, 525, 534, 543, 552, 605, 614, 623, 632, 641, 650, 659, 668, 677, 686, 739, 747, 755, 763, 771, 779, 787, 795, 803, 811, 857, 865, 873, 881, 889, 897, 905, 913, 921,
        929, 975, 983, 991, 999, 1007, 1015, 1023, 1031, 1039, 1047, 1086, 1092, 1098, 1104, 1110, 1116, 1122, 1128, 1134, 1140, 1172, 1178, 1184, 1190, 1196, 1202, 1208, 1214, 1220, 1226, 1257, 1263,
        1269, 1275, 1281, 1287, 1293, 1299, 1305, 1311, 1342
    ],
    "485": [
        0, 485, 494, 503, 512, 521, 530, 539, 548, 558, 611, 620, 629, 638, 647, 657, 666, 675, 684, 693, 746, 754, 763, 771, 779, 787, 795, 803, 811, 819, 866, 874, 882, 890, 898, 906, 914, 922, 930,
        938, 985, 993, 1001, 1009, 1017, 1025, 1033, 1041, 1049, 1057, 1097, 1103, 1109, 1115, 1121, 1127, 1133, 1139, 1145, 1151, 1184, 1190, 1196, 1202, 1208, 1214, 1220, 1226, 1232, 1238, 1270, 1276,
        1282, 1288, 1294, 1300, 1306, 1312, 1318, 1324, 1355
    ],
    "490": [
        0, 490, 499, 508, 517, 526, 536, 545, 554, 563, 617, 626, 635, 645, 654, 663, 672, 681, 691, 700, 754, 762, 770, 778, 786, 795, 803, 811, 819, 827, 874, 882, 890, 899, 907, 915, 923, 931, 939,
        948, 995, 1003, 1011, 1019, 1027, 1035, 1043, 1052, 1060, 1068, 1108, 1114, 1120, 1126, 1132, 1138, 1144, 1151, 1157, 1163, 1195, 1202, 1208, 1214, 1220, 1226, 1232, 1238, 1244, 1251, 1282, 1288,
        1294, 1301, 1307, 1313, 1319, 1325, 1331, 1337, 1369
    ],
    "518": [
        0, 518, 528, 538, 548, 557, 567, 577, 586, 596, 653, 663, 673, 683, 692, 702, 712, 721, 731, 741, 798, 807, 815, 824, 833, 841, 850, 859, 867, 876, 926, 934, 943, 951, 960, 969, 977, 986, 995,
        1003, 1053, 1062, 1070, 1079, 1088, 1096, 1105, 1113, 1122, 1131, 1173, 1179, 1186, 1192, 1199, 1205, 1212, 1218, 1225, 1231, 1266, 1272, 1279, 1285, 1292, 1298, 1305, 1311, 1318, 1324, 1358,
        1364, 1371, 1377, 1383, 1390, 1396, 1403, 1409, 1416, 1449
    ],
    "523": [
        0, 523, 533, 543, 553, 562, 572, 582, 592, 602, 659, 669, 679, 689, 699, 709, 718, 728, 738, 748, 806, 814, 823, 832, 840, 849, 858, 867, 875, 884, 934, 943, 952, 960, 969, 978, 986, 995, 1004,
        1013, 1063, 1071, 1080, 1089, 1098, 1106, 1115, 1124, 1133, 1141, 1184, 1190, 1197, 1203, 1210, 1216, 1223, 1230, 1236, 1243, 1277, 1284, 1291, 1297, 1304, 1310, 1317, 1323, 1330, 1336, 1370,
        1377, 1383, 1390, 1396, 1403, 1409, 1416, 1422, 1429, 1463
    ],
    "528": [
        0, 528, 538, 548, 558, 568, 578, 587, 597, 607, 666, 675, 685, 695, 705, 715, 725, 735, 745, 755, 813, 822, 831, 839, 848, 857, 866, 875, 883, 892, 943, 952, 960, 969, 978, 987, 996, 1004, 1013,
        1022, 1073, 1081, 1090, 1099, 1108, 1117, 1125, 1134, 1143, 1152, 1195, 1201, 1208, 1214, 1221, 1228, 1234, 1241, 1247, 1254, 1289, 1296, 1302, 1309, 1316, 1322, 1329, 1335, 1342, 1349, 1383,
        1389, 1396, 1403, 1409, 1416, 1422, 1429, 1436, 1442, 1476
    ],
    "312": [
        0, 312, 318, 324, 330, 335, 341, 347, 353, 359, 393, 399, 405, 411, 417, 423, 428, 434, 440, 446, 480, 486, 491, 496, 501, 506, 512, 517, 522, 527, 557, 562, 567, 573, 578, 583, 588, 593, 599,
        604, 634, 639, 644, 649, 655, 660, 665, 670, 675, 681, 706, 710, 714, 718, 722, 725, 729, 733, 737, 741, 762, 766, 770, 774, 777, 781, 785, 789, 793, 797, 817, 821, 825, 829, 833, 837, 840, 844,
        848, 852, 872
    ]
}

# endregion
